
package bd;
import classes.*;
import java.sql.*;
import java.util.*;

public class SetorBD {

    public static boolean salvar(Setor setor,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_SETOR(?,?,?,?,?,?)}");
            procedure.setInt(1, (Integer)null);
            procedure.setString(2,setor.getNome());
            procedure.setInt(3,setor.getUnidade().getId());
            procedure.setInt(4, usuarioLogado.getId());
            procedure.setInt(5,(Integer)null);
            procedure.setString(6,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean alterar(Setor setor,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_SETOR(?,?,?,?,?,?)}");
            procedure.setInt(1, setor.getId());
            procedure.setString(2,setor.getNome());
            procedure.setInt(3,setor.getUnidade().getId());
            procedure.setInt(4,(Integer)null);
            procedure.setInt(5,usuarioLogado.getId());
            procedure.setString(6,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean deletar(int codigo)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_SETOR(?,?,?,?,?,?)}");
            procedure.setInt(1, codigo);
            procedure.setString(2,null);
            procedure.setInt(3,(Integer)null);
            procedure.setInt(4,(Integer)null);
            procedure.setInt(5,(Integer)null);
            procedure.setString(6,"");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;
        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static Setor selecionar(int codigo)
    {
        Setor retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONASETOR where set_id="+codigo+"");
            if(resultado.next())
            {
                Setor novoSetor = new Setor();
                novoSetor.setId(codigo);
                novoSetor.setNome(resultado.getString("set_nome"));
                novoSetor.setUnidade(UnidadeBD.selecionar(resultado.getInt("uni_id")));

                retorno=novoSetor;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static ArrayList<Setor> selecionar()
    {
        ArrayList<Setor> vetSetores = new ArrayList<Setor>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONASETOR");
            while(resultado.next())
            {
                Setor novoSetor = new Setor();
                novoSetor.setId(resultado.getInt("set_id"));
                novoSetor.setNome(resultado.getString("set_nome"));
                novoSetor.setUnidade(UnidadeBD.selecionar(resultado.getInt("uni_id")));
                vetSetores.add(novoSetor);
            }
            conexao.close();
            return vetSetores;
        }catch(Exception excecao)
        {
            return null;
        }
    }

}
